home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD003b.dsk / FAST.FORWARD.MUSIC.bas < prev    next >
BASIC Source File  |  2003-06-12  |  12KB  |  353 lines

  1. 0  REM    FAST-> FORWARD-> MUSIC
  2. 1  ONERR  GOTO 8000
  3. 2  GOSUB 9000
  4. 3 T =  PEEK(78):D =  RND( -1): FOR A = 1 TO T +2:D =  RND(1): NEXT 
  5. 4  REM RANDOMIZE BY T.CRAWFORD,
  6. 5  REM CALL -APPLE FEB.'81
  7. 6  GOTO 20000
  8. 20  GOTO 10000
  9. 22  REM 
  10. 23  REM 
  11. 24  REM    +------------------+
  12. 25  REM    I   CHOOSE RANDOM  I
  13. 26  REM    I       NOTES      I
  14. 27  REM    +------------------+
  15. 28  REM 
  16. 29  REM 
  17. 35  FOR S1 = 1 TO 10
  18. 40 CLEF =  INT(2 * RND(1)) +1
  19. 45  GOSUB 1000
  20. 50 Z =  INT(12 * RND(1)) +1
  21. 55  IF T5  THEN Z = 11
  22. 60 T = 1
  23. 65  FOR X = 9 TO 35  STEP 5
  24. 66  IF T5  THEN Z = Z -1: GOTO 100
  25. 70 D =  INT(2 * RND(1))
  26. 75  IF D  THEN Z = Z +1: GOTO 90
  27. 80 Z = Z -1
  28. 90 Z = Z -(Z -1) *(Z <1)
  29. 100 Z = Z -(Z -12) *(Z >12)
  30. 110  IF  RND(1) >DF *.01  THEN Z =  INT(12 * RND(1)) +1
  31. 120  IF CLEF = 2  AND X = 9  AND Z <7  THEN Z = 7
  32. 130 NTE(T) = Z
  33. 140 Y1(T) = 5 *(Z = 1) +8 *(Z = 2) +10 *(Z = 3) +13 *(Z = 4) +15 *(Z = 5) +18 *(Z = 6) +20 *(Z = 7) +23 *(Z = 8) +25 *(Z = 9) +28 *(Z = 10) +30 *(Z = 11) +33 *(Z = 12) +35 *(Z = 13)
  34. 150 Y = Y1(T)
  35. 280  REM SET-UP NOTES
  36. 283  ON CLEF GOSUB 500,550
  37. 284 T = T +1
  38. 289  GOSUB 2000: NEXT X
  39. 290  ON CLEF GOSUB 6000,6190
  40. 300  IF T5  THEN 20290
  41. 320  GOSUB 4000
  42. 330  NEXT S1
  43. 340  GOTO 80
  44. 500  REM TREBLE
  45. 510  ON Z GOSUB 6070,6080,6090,6100,6110,6120,6130,6140,6150,6160,6170,6180
  46. 520  RETURN 
  47. 550  REM BASS
  48. 560  ON Z GOSUB 6260,6270,6280,6290,6300,6310,6320,6330,6340,6350,6360,6370
  49. 570  RETURN 
  50. 991  REM 
  51. 992  REM 
  52. 993  REM     +-----------------+
  53. 994  REM     I   DRAW  STAFF   I
  54. 995  REM     +-----------------+
  55. 996  REM 
  56. 997  REM 
  57. 1000  IF   NOT T5  THEN  HOME 
  58. 1010  IF  SCRN( 4,8) = 15  THEN 1030
  59. 1020  GR 
  60. 1030 D =  INT(9 * RND(1))
  61. 1035  IF D < >1  AND D < >2  AND D < >4  AND D < >8  OR D =  SCRN( 0,0)  THEN 1030
  62. 1040  COLOR= D
  63. 1050  ON CLEF GOTO 1060,1080
  64. 1060  FOR X = 0 TO 19: VLIN 0,39 AT X: VLIN 0,39 AT 39 -X: NEXT 
  65. 1070  GOTO 1090
  66. 1080  FOR Y = 0 TO 19: HLIN 0,39 AT Y: HLIN 0,39 AT 39 -Y: NEXT 
  67. 1090  COLOR= 11: ON CLEF GOTO 1100,1120
  68. 1100  FOR Y = 9 TO 18: HLIN 1,38 AT Y: HLIN 1,38 AT 37 -Y: NEXT 
  69. 1110  GOTO 1130
  70. 1120  FOR X = 1 TO 19: VLIN 9,27 AT X: VLIN 9,27 AT 39 -X: NEXT 
  71. 1130  COLOR= 6
  72. 1140  FOR Y = 8 TO 28  STEP 5
  73. 1150  HLIN 1,38 AT Y
  74. 1160  NEXT Y
  75. 1170  VLIN 8,28 AT 0: VLIN 8,28 AT 39
  76. 1180  COLOR= 15
  77. 1190  ON CLEF GOSUB 1210,1250
  78. 1200  RETURN 
  79. 1210  REM TREBLE CLEF
  80. 1220  VLIN 4,30 AT 4: PLOT 3,30: PLOT 5,6: VLIN 7,9 AT 6: VLIN 10,11 AT 5: VLIN 13,14 AT 3: VLIN 14,15 AT 2: VLIN 16,18 AT 1: VLIN 18,23 AT 0: VLIN 23,24 AT 1: VLIN 24,25 AT 2: VLIN 25,27 AT 3: VLIN 25,27 AT 5
  81. 1230  VLIN 24,25 AT 6: VLIN 21,24 AT 7: VLIN 19,20 AT 6: HLIN 3,5 AT 18: VLIN 19,20 AT 2
  82. 1240 TP = TP +6: RETURN 
  83. 1250  REM BASS CLEF
  84. 1260  HLIN 3,5 AT 8: VLIN 9,10 AT 2: VLIN 10,14 AT 1: VLIN 14,15 AT 2: VLIN 15,16 AT 3
  85. 1270  VLIN 9,10 AT 6: VLIN 11,17 AT 7: VLIN 17,18 AT 6: VLIN 19,20 AT 5: VLIN 21,22 AT 4
  86. 1280  VLIN 21,22 AT 3: VLIN 10,11 AT 9: VLIN 15,16 AT 9: PLOT 2,23
  87. 1290 BP = BP +6: RETURN 
  88. 1991  REM 
  89. 1992  REM 
  90. 1993  REM   +------------------+
  91. 1994  REM   I  DRAW A NOTE AT  I
  92. 1995  REM   I       (X,Y)      I
  93. 1996  REM   +------------------+
  94. 1997  REM 
  95. 2000  COLOR= 12
  96. 2010  IF Y >30  THEN  GOSUB 2130
  97. 2030  IF FLAG  THEN  COLOR= 0
  98. 2040  HLIN X +1,X +2 AT Y -1
  99. 2050  HLIN X,X +3 AT Y
  100. 2060  HLIN X,X +3 AT Y +1
  101. 2070  HLIN X +1,X +2 AT Y +2
  102. 2080  IF Y <9  THEN 2110
  103. 2090  VLIN Y -10,Y AT X +3
  104. 2100  RETURN 
  105. 2110  VLIN Y,Y +10 AT X: RETURN 
  106. 2120  REM LEGER LINE
  107. 2130  COLOR= 6
  108. 2140  HLIN X -1,X +4 AT Y
  109. 2150  COLOR= 12: RETURN 
  110. 3991  REM 
  111. 3992  REM 
  112. 3993  REM    +-----------------+
  113. 3994  REM    I IDENTIFY  NOTES I
  114. 3995  REM    +-----------------+
  115. 3996  REM 
  116. 4000  REM 
  117. 4010 A = 0
  118. 4020  FOR X = 9 TO 35  STEP 5
  119. 4030  HOME 
  120. 4040 PD = 0
  121. 4060 A = A +1
  122. 4080  FOR T = 1 TO DF
  123. 4085 FL = (T/2 =  INT(T/2))
  124. 4090  IF FLAG  THEN 4100
  125. 4095 FLAG = 0
  126. 4100 Y = Y1(A)
  127. 4110  GOSUB 2000
  128. 4120  GOSUB 4500
  129. 4125  IF  PEEK( -16287) >127  THEN FLAG = 1:T = DF: NEXT T: GOSUB 2000: GOTO 4140
  130. 4130  FOR D = 1 TO DF: NEXT D,T
  131. 4135  GOTO 4260
  132. 4140  VTAB 23: HTAB 21:ANS$ = P$
  133. 4160 T = 0
  134. 4170 N = NTE(A):FLAG = 1
  135. 4175 PI = PI(A): IF ANS$ < >NTE$(A)  THEN 4195
  136. 4177  ON CLEF GOSUB 6040,6230
  137. 4180 TS = TS +((ANS$ = NTE$(A)) *(CLEF = 1))
  138. 4190 BS = BS +((ANS$ = NTE$(A)) *(CLEF = 2))
  139. 4193  GOSUB 7000: GOTO 4230
  140. 4195  HOME 
  141. 4200  PRINT "SORRY "NAME$", BUT YOU'RE WRONG..."
  142. 4202  IF DF = 10  THEN 4208
  143. 4204  PRINT "THE CORRECT ANSWER WAS ";: FLASH : PRINT NTE$(A);: NORMAL : PRINT ".";
  144. 4206  GOTO 4210
  145. 4208  PRINT : FLASH : HTAB 9: PRINT " BETTER LUCK NEXT TIME! ": NORMAL 
  146. 4210  GOSUB 5000
  147. 4220  FOR D = 1 TO 1500: NEXT 
  148. 4230 FLAG = 0: GOSUB 2000: NEXT 
  149. 4240  ON CLEF GOSUB 6000,6190
  150. 4245 DF = DF -5
  151. 4247 DF = DF +5 *(DF = 5)
  152. 4250  RETURN 
  153. 4260 PI = PI(A)
  154. 4265  HOME : PRINT "OH, "NAME$" - YOUR TIME IS UP!"
  155. 4275  IF DF = 10  THEN 4290
  156. 4280  PRINT : PRINT "THIS NOTE IS ";: FLASH : PRINT NTE$(A);: NORMAL : PRINT ".";
  157. 4290  GOSUB 5000: GOTO 4220
  158. 4500 TI = 1 + INT( PDL(0)/36.4):TI = TI -(TI -7) *(TI >7): IF PD = TI  THEN  RETURN 
  159. 4505  INVERSE : VTAB 21: PRINT "             A B C D E F G              ": NORMAL 
  160. 4510 PD = TI
  161. 4515 P$ =  CHR$(64 +PD)
  162. 4517 HT = 12 +2 *PD
  163. 4520  VTAB 21: HTAB HT: PRINT P$: RETURN 
  164. 4991  REM 
  165. 4992  REM 
  166. 4993  REM      +----------+
  167. 4994  REM      I BUZZER!! I
  168. 4995  REM      +----------+
  169. 5000  REM 
  170. 5010  FOR D = 1 TO 25
  171. 5020  POKE 768,PI: POKE 769,8
  172. 5025  CALL 770: NEXT 
  173. 5030  RETURN 
  174. 5991  REM 
  175. 5992  REM 
  176. 5993  REM    +---------------+
  177. 5994  REM    I  PLAY  NOTES  I
  178. 5995  REM    +---------------+
  179. 5996  REM 
  180. 5997  REM 
  181. 6000  REM PLAY IN TREBLE CLEF
  182. 6010 T = 0: FOR X = 9 TO 35  STEP 5:T = T +1
  183. 6020 PI = PI(T):Y = Y1(T)
  184. 6025  COLOR= 0: GOSUB 2040
  185. 6040  POKE 768,PI: POKE 769,DF *2
  186. 6050  CALL 770
  187. 6052  GOSUB 2000
  188. 6055  IF FLAG  THEN  RETURN 
  189. 6060  NEXT : RETURN 
  190. 6070 PI(T) = 85:NTE$(T) = "G": RETURN 
  191. 6080 PI(T) = 96:NTE$(T) = "F": RETURN 
  192. 6090 PI(T) = 102:NTE$(T) = "E": RETURN 
  193. 6100 PI(T) = 114:NTE$(T) = "D": RETURN 
  194. 6110 PI(T) = 128:NTE$(T) = "C": RETURN 
  195. 6120 PI(T) = 136:NTE$(T) = "B": RETURN 
  196. 6130 PI(T) = 152:NTE$(T) = "A": RETURN 
  197. 6140 PI(T) = 171:NTE$(T) = "G": RETURN 
  198. 6150 PI(T) = 192:NTE$(T) = "F": RETURN 
  199. 6160 PI(T) = 203:NTE$(T) = "E": RETURN 
  200. 6170 PI(T) = 228:NTE$(T) = "D": RETURN 
  201. 6180 PI(T) = 0:NTE$(T) = "C": RETURN 
  202. 6190  REM PLAY NOTES (BASS)
  203. 6200 T = 0: FOR X = 9 TO 35  STEP 5:T = T +1
  204. 6210 PI = PI(T):Y = Y1(T)
  205. 6215  COLOR= 0: GOSUB 2040
  206. 6230  POKE 768,PI: POKE 769,DF *2
  207. 6240  CALL 770
  208. 6243  GOSUB 2000
  209. 6245  IF FLAG  THEN  RETURN 
  210. 6250  NEXT : RETURN 
  211. 6260 PI(T) = 68:NTE$(T) = "B": RETURN 
  212. 6270 PI(T) = 76:NTE$(T) = "A": RETURN 
  213. 6280 PI(T) = 85:NTE$(T) = "G": RETURN 
  214. 6290 PI(T) = 96:NTE$(T) = "F": RETURN 
  215. 6300 PI(T) = 102:NTE$(T) = "E": RETURN 
  216. 6310 PI(T) = 114:NTE$(T) = "D": RETURN 
  217. 6320 PI(T) = 128:NTE$(T) = "C": RETURN 
  218. 6330 PI(T) = 136:NTE$(T) = "B": RETURN 
  219. 6340 PI(T) = 152:NTE$(T) = "A": RETURN 
  220. 6350 PI(T) = 171:NTE$(T) = "G": RETURN 
  221. 6360 PI(T) = 192:NTE$(T) = "F": RETURN 
  222. 6370 PI(T) = 203:NTE$(T) = "E": RETURN 
  223. 6991  REM 
  224. 6992  REM 
  225. 6993  REM   +-----------------+
  226. 6994  REM   I CORRECT  ANSWER I
  227. 6995  REM   I      GIVEN!     I
  228. 6996  REM   +-----------------+
  229. 6997  REM 
  230. 6998  REM 
  231. 7000  REM 
  232. 7005  INVERSE : VTAB 24: HTAB 16: PRINT " CORRECT! ";: NORMAL 
  233. 7010  FOR T = 1 TO 10: POKE 768,255: POKE 769,10: CALL 770: NEXT : RETURN 
  234. 7991  REM 
  235. 7992  REM 
  236. 7993  REM   +------------------+
  237. 7994  REM   I FINAL EVALUATION I
  238. 7995  REM   +------------------+
  239. 7996  REM 
  240. 8000  REM 
  241. 8010  TEXT : HOME : VTAB 5
  242. 8015  FOR TI = 0 TO 3
  243. 8020  FOR T = 255 TO 75  STEP  -10: POKE 768,T: POKE 769,9: CALL 770: NEXT : NEXT 
  244. 8025  IF   NOT TP  AND   NOT BP  THEN 8080
  245. 8030  PRINT "EVALUATION: "NAME$
  246. 8040  PRINT : PRINT "FINAL DIFFICULTY LEVEL: "; INT(DF/10)
  247. 8045  IF   NOT BP  THEN 8055
  248. 8050  PRINT : PRINT "BASS: "BS" OUT OF "BP", OR " INT(BS/BP *100)"%"
  249. 8055  IF   NOT TP  THEN 8070
  250. 8060  PRINT : PRINT "TREBLE: "TS" OUT OF "TP", OR " INT(TS/TP *100)"%"
  251. 8070  PRINT : PRINT "TOTAL SCORE: "BS +TS" OUT OF "BP +TP", OR " INT((BS +TS)/(BP +TP) *100)"%"
  252. 8080  VTAB 20: POKE  -16368,0
  253. 8090  INPUT "CARE TO TRY AGAIN? ";ANS$
  254. 8100 ANS$ =  LEFT$(ANS$,1)
  255. 8110  IF ANS$ = "Y"  THEN  RUN 10180
  256. 8120  IF ANS$ < >"N"  THEN 8090
  257. 8125  PRINT 
  258. 8130  PRINT "BYE "NAME$"!": END 
  259. 8991  REM 
  260. 8992  REM 
  261. 8993  REM  +-------------------+
  262. 8994  REM  I POKE TONE ROUTINE I
  263. 8995  REM  +-------------------+
  264. 8996  REM 
  265. 8997  REM 
  266. 9000  REM 
  267. 9010  FOR T = 770 TO 790
  268. 9020  READ A: POKE T,A
  269. 9030  NEXT : RETURN 
  270. 9100  DATA 173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,2,3,96
  271. 9990  REM 
  272. 9991  REM 
  273. 9992  REM 
  274. 9993  REM     +----------------+
  275. 9994  REM     I  INSTRUCTIONS  I
  276. 9995  REM     +----------------+
  277. 9996  REM 
  278. 9997  REM 
  279. 9998  REM 
  280. 10000  TEXT : HOME : HTAB 10
  281. 10010  PRINT "FAST-> FORWARD-> MUSIC"
  282. 10020  PRINT : PRINT 
  283. 10030  PRINT "   THIS PROGRAM IS A COLOR/SOUND QUIZ ON"
  284. 10040  PRINT "SIMPLE MUSICAL NOTATION & ON THE IDENTI-"
  285. 10050  PRINT "FICATION OF NOTES IN THE BASS AND TREBLE"
  286. 10060  PRINT "CLEFS.  LEGER LINES WILL BE INCORPORATED"
  287. 10065  PRINT "AS WILL A TIME LIMIT BASED ON DIFFICULTY"
  288. 10070  PRINT "LEVEL.  PLEASE NOTE THAT THE GAME PADDLE"
  289. 10075  PRINT "SET OR JOYSTICK MUST BE CONNECTED BEFORE"
  290. 10080  PRINT "RUNNING THIS PROGRAM..."
  291. 10085  VTAB 20: INPUT "DO YOU WISH FURTHER INSTRUCTIONS? ";ANS$
  292. 10087 ANS$ =  LEFT$(ANS$,1): IF ANS$ < >"Y"  AND ANS$ < >"N"  THEN 10000
  293. 10090  IF ANS$ = "N"  THEN 10180
  294. 10095  HOME : VTAB 5: HTAB 11: PRINT "-=* INSTRUCTIONS *=-"
  295. 10100  PRINT : PRINT "    AFTER ENTERING YOUR DESIRED STARTING"
  296. 10105  PRINT "DIFFICULTY LEVEL,  YOU WILL BE PRESENTED"
  297. 10110  PRINT "WITH A SET OF 10 SCALES OF 6 NOTES EACH."
  298. 10115  PRINT "THE MOTIF WILL BE PLAYED FOLLOWING WHICH"
  299. 10120  PRINT "EACH OF THE NOTES WILL FLASH UNTIL *YOU*"
  300. 10125  PRINT "IDENTIFY THEM.  A TIME LIMIT WILL BE IM-"
  301. 10127  PRINT "POSED & WILL SHORTEN  WITH EACH SUCCESS-"
  302. 10130  PRINT "IVE SCALE OF NOTES."
  303. 10132  VTAB 24: HTAB 7: PRINT "PRESS <SPACE BAR> TO CONTINUE";
  304. 10133  POKE  -16368,0: WAIT  -16384,128: POKE  -16368,0: HOME 
  305. 10135  VTAB 7: PRINT "    TO IDENTIFY A NOTE, TURN GAME PADDLE"
  306. 10137  PRINT "#0 SO THE CURSOR BLOCK APPEARS  OVER THE"
  307. 10140  PRINT "DESIRED NOTE. PRESS THE PADDLE BUTTON TO"
  308. 10142  PRINT "ENTER THE NOTE AS YOUR ANSWER."
  309. 10144  PRINT : PRINT : GOTO 10190
  310. 10180  HOME : VTAB 10
  311. 10190  INPUT "PLEASE ENTER YOUR FIRST NAME:";NAME$
  312. 10205  IF NAME$ = ""  THEN 10195
  313. 10210  PRINT 
  314. 10220  FOR T = 1 TO  LEN(NAME$)
  315. 10230  IF  ASC( MID$ (NAME$,T,1)) = 32  THEN NAME$ =  LEFT$(NAME$,T -1): GOTO 10250
  316. 10240  NEXT 
  317. 10250  PRINT "HI THERE "NAME$","
  318. 10260  PRINT : PRINT "WELCOME TO MUSICAL NOTATION!!"
  319. 10262  PRINT : PRINT "WHICH DIFFICULTY LEVEL WOULD YOU LIKE TO": PRINT "START AT? (1-10,1=HARDEST) ";: INPUT DF
  320. 10264  IF DF <1  OR DF >10  THEN  PRINT : PRINT "PLEASE TYPE A NUMBER FROM 1 TO 10:": PRINT : GOTO 10262
  321. 10266 DF = DF *10
  322. 10290  GOSUB 9000: GOTO 35
  323. 15002  REM 
  324. 15003  REM 
  325. 15004  REM   +--------------+
  326. 15005  REM   I  TITLE PAGE  I
  327. 15006  REM   +--------------+
  328. 15007  REM 
  329. 15008  REM 
  330. 20000  GR 
  331. 20010  HOME 
  332. 20240  VTAB 22
  333. 20245  INVERSE : HTAB 9: PRINT " FAST-> FORWARD-> MUSIC "
  334. 20260  HTAB 9: PRINT "       BY JIM GANZ      "
  335. 20285 T5 = 1:CLEF = 1:DF = 100: FOR S1 = 1 TO 10: GOTO 45
  336. 20290  HTAB 9: PRINT " PRESS ANY KEY TO BEGIN ";: NORMAL 
  337. 20295  POKE  -16368,0: WAIT  -16384,128: POKE  -16368,0
  338. 20300  RUN 20
  339. 50000  REM 
  340. 50001  REM 
  341. 50002  REM 
  342. 50003  REM +------------------+
  343. 50004  REM FAST->FORWARD->MUSIC
  344. 50006  REM :   BY JIM GANZ    :
  345. 50007  REM :  82 SPRING LANE  :
  346. 50008  REM : WEST HARTFORD,CT :
  347. 50009  REM :       06107      :
  348. 50010  REM :     17-MAY-81    :
  349. 50011  REM +------------------+
  350. 50012  REM 
  351. 50013  REM 
  352. 50014  REM             /
  353. 50015  REM         EL FIN